home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / g_quake / server~1.zip / _MANUAL < prev    next >
Text File  |  1996-10-04  |  22KB  |  502 lines

  1. -------------------------------------------------------------------------
  2.  
  3. ###### Overview:
  4. ----------------
  5.  
  6. ServerModules is a set of modularized QuakeC modifications.
  7. The range of applicability is restricted to deathmatch games.
  8. The modifications require an installation on the server only. 
  9. They are based on QuakeC version 1.06 and may be used by
  10. 1.01, 1.05a and 1.06 deathmatch servers.
  11.  
  12. -------------------------------------------------------------------------
  13.  
  14. ###### Modules:
  15. ---------------
  16.  
  17. Module Burn:
  18.     Allows players to burn.
  19.     Players may start to burn if being bombarded by certain weapons,
  20.     including drones (see module Drone), the weldgun (see module
  21.     WeldGun) and shrapnel missiles (see module Shrapnel).
  22.     Three flavours of burning exist. The first causes little damage,
  23.     the third hurts significantly. A player burning mildly may
  24.     start to burn worse if hit again by incendiary ammunition. 
  25.     Fire is extinguished automatically after a certain period of time
  26.     or if the burning player jumps into sufficiently deep water.
  27.     A burning player may infect other players in the vicinity.
  28.  
  29. Module Drone:
  30.     Provides homing missiles to be shot by the grenade launcher.
  31.     Drones search for targets once every second, preferring those
  32.     which are most easily reached.
  33.     To find potential targets hidden behind corners launched drones
  34.     first fly on a straight trajectory for about one second, then 
  35.     start to adjust their velocity as required to reach the target. 
  36.     A Drone will target its owner if better target can not be found.
  37.     Flying drones can be shot down, most easily with the shotgun
  38.     or by nearby explosions.
  39.     A player can only have four drones in air simultaneously. 
  40.     Launching a fifth one causes the self destruction of an older
  41.     drone.
  42.     Golden keys of targeted players are lit to indicate that they
  43.     are hunted.
  44.     To fire drones the player has to select the grenade launcher
  45.     twice. The player's silver key is lit if the grenade launcher 
  46.     fires drones.
  47.     This is not an 'allround' weapon. It is a very specialized
  48.     weapon which sometimes provides the only way to attack an enemy
  49.     which can not be attacked directly.
  50.  
  51. Module ExitRules:
  52.     Disallows to exit a level too early.
  53.     Players can only exit a level
  54.        - if at least one player has reached a minimum number of frags
  55.          (which is 40 by default).
  56.        - and if a certain time has passed on the current level (which
  57.          is 1 minute by default).
  58.     These ExitRules may be disabled by voting (see Module Vote).
  59.     The ExitRules valid for the current level are displayed when
  60.     the player enters the level.
  61.     Levels like 'dm1'-'dm6','start' and 'end' don't impose ExitRules.
  62.  
  63. Module KickSuicider:
  64.    Players suiciding twice within two minutes are kicked out of the
  65.    game.
  66.  
  67. Module Lightning:
  68.    This module reduces the damage done when discharging the lighning gun
  69.    under water. Furthermore it improves the sound of the lightning gun
  70.    and causes a lighning gun discharge to happen only if the gun is 
  71.    really under water.
  72.  
  73. Module Init:
  74.     Allows client side initialization when connecting to the server
  75.     by causing the client to execute a sequence of 'init' commands.
  76.     Example: 
  77.        A player puts the following lines into his autexec.cfg:
  78.           alias init    init01
  79.           alias init01 "init-nextcall; alias init init02; echo successful;"
  80.           alias init02 "init-nextskin; alias init init03; " // skin  2
  81.           alias init03 "init-nextskin; alias init init04; " // skin  3
  82.           alias init04 "init-nextskin; alias init init05; " // skin  4
  83.           alias init05 "init-nextskin; alias init init06; " // skin  5
  84.           alias init06 "init-nextcall; alias init init07; color 3; "
  85.           alias init07 "               alias init init01; "
  86.        These lines cause that a short time after the player connected
  87.        to the server
  88.           - he is assigned the skin number 5.
  89.           - his color changes to 3.
  90.     How it works:
  91.        The server first tells the client to execute the command 'init'.
  92.        The client executes 'init' which includes either 'init-nextskin'
  93.        or 'init-nextcall', both of which tell the server to again let
  94.        the client execute the command 'init'. This continues until in 
  95.        the example above the empty assignment 'init07' terminates the
  96.        sequence. Apart from triggering the next step 'init-nextskin'
  97.        also increases the skin number by one.
  98.  
  99. Module LevelSelect:
  100.    Allows to specify which levels are offered on the server and in which
  101.    order they are to be played.
  102.    By default this module is used to modify the original level order
  103.    such that instead of the end level the level sequence dm2-...-dm6-end
  104.    is played when selecting the end map on the start level (the players
  105.    must exit the levels dm1-dm6 and end by voting (see Module Vote)).
  106.  
  107. Module Messages:
  108.    Allows to selectively enable or disable messages about picking up ammo,
  109.    armor, backpacks, keys, health, powerups and weapons. 
  110.    By default these messages are suppressed.
  111.  
  112. Module Motd: 
  113.    When connecting to the server a message-of-the-day may be 
  114.    center-printed to the player's screen.
  115.    A moment later, information about local server settings and
  116.    extensions is dumped to the player's console.
  117.  
  118. Module Observer:
  119.    As observer you just watch what's happening, without interacting
  120.    with other players or with the environment.
  121.    This especially means that other players will not notice you when you
  122.    are an observer.
  123.    As observer you can
  124.       - fly around. 
  125.       - switch to another observation point by pressing 'fire'.
  126.       - join the game as regular player by pressing 'jump'.
  127.    You can turn into an observer by pressing 'fire' when you
  128.    are dead.
  129.    When you connect to the server you automatically start as observer.
  130.    The command 'help-observer' provides help on the observer mode.
  131.  
  132. Module Protect:
  133.     Protects respawning players.
  134.     The protection ends automatically after a certain amount of time
  135.     or if the player shoots or picks up a weapon, armor or a powerup.
  136.  
  137. Module Random:
  138.     Randomizes positions of items.
  139.     The randomizer knows four groups of items:
  140.         AMMO:     shells, nails, rockets, cells and health boxes
  141.         WEAPON:   all weapons
  142.         POWERUP:  armors, quad damage, invisibility, invincibility,
  143.                   and superhealth
  144.     The randomizer mixes only items within the same group.
  145.     Randomization doesn't affect the biosuit.
  146.   
  147. Module Rank:
  148.     The command 'rank' displays a sorted ranking table with entries 
  149.     in the format
  150.        X TOTAL = KILLS DEATHS ACCIDENTS = PLAYER
  151.     where
  152.         X         = letter 'D' if the player is dead, letter 'O' if
  153.                     the player is an observer
  154.         PLAYER    = the name of the player
  155.         TOTAL     = his total score
  156.         KILLS     = how many he killed    
  157.         DEATHS    = how often he got killed by other players
  158.         ACCIDENTS = number of self-caused, deathly accidents
  159.     A Suicide counts as double-accident.
  160.     The default formula for calculating TOTAL is
  161.         TOTAL     = 3*KILLS - DEATHS - 3*ACCIDENTS
  162.     The command 'help-rank' provides help on the format of the ranking
  163.     table and should explain the (local) formula used to calculate the 
  164.     total score as well.
  165.  
  166. Module ServerConsole:
  167.     Does nothing except except of printing some messages to the server
  168.     console when a player suicides, is killed, enters the game or is 
  169.     telefragged by another player.
  170.  
  171. Module ServerHelp:
  172.     Provides the command 'server-help', used to display some help on
  173.     server settings and extensions in the player console.
  174.  
  175. Module Shrapnel:
  176.     Provides splintering missiles to be shot by the rocket launcher.
  177.     Once a splintering missile hits a massive object it defragments
  178.     into a few splinters. The high-speed, burning fragments move
  179.     on straight trajectories but are reflected by every massive object,
  180.     causing an explosion on the object's surface. Players hit by the
  181.     missile or by its fragments may start to burn (see module Burn).
  182.     To fire shrapnel missiles the player has to select the rocket
  183.     launcher twice. The player's silver key is lit if the rocket
  184.     launcher operates in 'sharapnel missile' mode.
  185.     This is not an 'allround' weapon; its main intent is to clean
  186.     rooms or other areas from a safe distance.
  187.  
  188. Module Skin:
  189.     This is a slightly improved version of Dennis Noordsij's 
  190.     (lnoordsi@inter.NL.net) Multiskin, which allows players to use
  191.     different skins (see also section Acknowledgements below).
  192.     The improvements have the effect that
  193.        - corpses show the correct skin.
  194.        - skins are preserved  across level changings (so that players 
  195.          have to choose their skin only once).
  196.        - the commands 'skin-next' and 'skin-prev' may be used to change
  197.          the skin.
  198.        - the command 'help-skin' provides some help about available
  199.          commands.
  200.        - names for Multiskin-1.1 skins and for Top20Skins-1.0 skins are 
  201.          shown when the player chooses a skin.
  202.    Players certainly still have to use proper player and player-head 
  203.    model files containing the actual skins to be displayed. 
  204.    ServerModules supports
  205.       - the MultiSkin 1.1 PLAYER.MDL file which may be found on 
  206.         Dennis Noordsij's QuakeC page: 
  207.            http://web.inter.NL.net/users/L.J.Noordsij/qc.htm
  208.       - the Top20Skins PLAYER.MDL and H_PLAYER.MDL file included in the
  209.         skin collection
  210.            ftp://ftp.cdrom.com/pub/quake/graphics/mdl/top20skins-1.0.zip
  211.         When using this set of skins gibbed heads will show the correct
  212.         skin also.
  213.  
  214. Module Vote:
  215.     Allows players to vote.
  216.     Players may use the console commands
  217.        vote-exit:      to vote for exiting a level immediately.
  218.        vote-exitrules: to vote for disabling the rules imposed by
  219.                        the module ExitRules.
  220.     Votes are counted every few seconds. 
  221.     Voting for exiting allows to leave levels which don't provide an
  222.     exit.
  223.     Voting via 'vote-exit' and 'vote-exitrules' may both be used to 
  224.     override the ExitRules for the current level.
  225.     The console command 'help-vote' provides some help on available
  226.     voting options, the command 'votes' displays current voting
  227.     statistics.
  228.  
  229. Module WeldGun:
  230.     Provides a weapon which spits burning blobs of a magnesium-steel
  231.     mixture in rapid succession.
  232.     The blobs cause small explosions on the surface of whatever they
  233.     hit.
  234.     Players hit by burning blobs may start to burn (see module Burn).
  235.     This weapon overrides the nailgun. Selecting the nailgun twice 
  236.     causes it to shoot ordinary spikes instead.
  237.     The player's silver key is lit if the weldgun is active.
  238.     
  239. -------------------------------------------------------------------------
  240.  
  241. ###### Bugs/Unwanted Features:
  242. ------------------------------
  243.  
  244. # Drones which just bounced or which stay close to walls can not be
  245.   shot down by other projectiles (like those fired by the shotgun or
  246.   nailgun). This is a Quake restriction and can not be changed.
  247.   Such drones are, however, still sensitive to explosions.
  248. # Occasionally drones leave/enter the level through walls. Again, this
  249.   is due to Quake limitations.
  250. # Observers occasionally get stuck or start in a position from which they
  251.   can't move away. If this happens just press 'fire' to jump to another 
  252.   place or use the command 'observer-noclip' to free yourself.
  253.   Observers may also get stuck when passing teleporters with buggy
  254.   target spots. The only examples I know so far are
  255.     - level e1m1: the teleporter leading to the pentagramm of protection.  
  256.     - level end: the teleporter leading to a spot from which the player
  257.                  falls down into the water.
  258.   Again, just press 'fire' to jump to another place or use the command
  259.   'observer-teleport'.
  260.  
  261. -------------------------------------------------------------------------
  262.  
  263. ###### How to install:
  264. ------------------------
  265.  
  266. This section assumes that you are a server administrator.
  267.  
  268. ### Testing:
  269. ------------
  270.  
  271. For testing purposes you may first want to try the precompiled PROGS.DAT.
  272.  
  273. Assuming that QUAKE.EXE resides in C:\GAMES\QUAKE you should
  274.    - create the directory C:\GAMES\QUAKE\SERVMODS
  275.    - copy the file PROGS.DAT included in the 'Server Modules' archive 
  276.      to C:\GAMES\QUAKE\SERVMODS
  277.    - start a listen server by 
  278.         QUAKE -GAME SERVMODS -LISTEN 2
  279.  
  280. ### Customization:
  281. ------------------
  282.  
  283. Customizing requires that you know how to use the program PATCH.
  284. See the file '_patch.txt' included in the 'Server Modules' archive
  285. for details on how to obtain a free copy of this program and on how
  286. to use it. Jeff Epler (jepler@inetnebr.com) wrote '_patch.txt' and
  287.    ftp://ftp.cdrom.com/pub/quake/quakec/howpatch.txt
  288. should be the most recent version of this short introduction.
  289.  
  290. This version of ServerModules is based on Quake 1.06. Make sure you have
  291. this version of the QuakeC sources available.
  292.  
  293. Assuming that the directory C:\GAMES\QUAKE\SERVMODS contains a fresh copy 
  294. of unmodified QuakeC sources (version 1.06) together with the program 
  295. QCCDOS you may proceed in the following way:
  296.  
  297. # Unzip the 'Server Modules' archive in C:\GAMES\QUAKE\SERVMODS.
  298.  
  299. # Patch the sources by typing the command
  300.     PATCH < _SRVMODS.PAT
  301.  
  302. # Disable/Enable the usage of a specific module by editing the 
  303.   USE_MODULE_* constants in file _MODULES.QH .
  304.   By default you'll find there
  305.      float USE_MODULE_BURN            = 1;
  306.      float USE_MODULE_DRONE            = 1;
  307.      float USE_MODULE_EXITRULES            = 1;
  308.      float USE_MODULE_INIT            = 0;
  309.      float USE_MODULE_KICKSUICIDER        = 1;
  310.      float USE_MODULE_LEVELSELECT        = 1;
  311.      float USE_MODULE_LIGHTNING            = 1;
  312.      float USE_MODULE_MESSAGES            = 1;
  313.      float USE_MODULE_MOTD            = 1;
  314.      float USE_MODULE_OBSERVER            = 1;
  315.      float USE_MODULE_PROTECT            = 1;
  316.      float USE_MODULE_RANK            = 1;
  317.      float USE_MODULE_RANDOM            = 1;
  318.      float USE_MODULE_SERVERHELP        = 1;
  319.      float USE_MODULE_SKIN            = 1;
  320.      float USE_MODULE_SERVERCONSOLE        = 1;
  321.      float USE_MODULE_SHRAPNEL            = 1;
  322.      float USE_MODULE_VOTE            = 1;
  323.      float     USE_SUBMODULE_VOTE_EXIT        = 1;
  324.      float     USE_SUBMODULE_VOTE_EXITRULES    = 1;
  325.      float USE_MODULE_WELDGUN            = 1;
  326.   which means that except of module 'Init' all modules are enabled.
  327.   The USE_SUBMODULE_VOTE_* constants above enable/disable submodules
  328.   of the the module 'Vote'. Setting 'USE_SUBMODULE_VOTE_EXIT=0' disables
  329.   voting for exiting but voting for overriding ExitRules will
  330.   still be allowed.
  331.  
  332. # To change the message-of-the-day displayed when a player connects to
  333.   the server you should edit the file _MOTD.QC and change the variable 
  334.   'motd_motd' in the function 'MotdInit'.
  335.  
  336. # To change the help about server settings (which is displayed when
  337.   connecting to a server or when typing 'help-server') just edit
  338.   the function 'ServerHelpShowServerSettings' in the file _SERVHLP.QC.
  339.  
  340. # If you want to inform players about more special properties of your 
  341.   server have a look at the function 'ModulesShowInfo' in the file 
  342.   _MODULES.QC. You can freely add your own messages there.
  343.  
  344. # The module 'Messages' by default takes care that a player receives no
  345.   messages when picking up ammunition, armor,  etc.
  346.   If you want to allow for some or all of these messages you should edit
  347.   the file _MESSAGE.QH and change the value of the flag 'messages_flag'.
  348.  
  349. # Changing the formula used by the module 'Rank' for calculating the total
  350.   score requires you to edit the function 'RankCountEvent' in the file
  351.   _RANK.QC in an obvious way.
  352.  
  353. # The Module 'LevelSelect' allows to specify which maps are offered on
  354.   the server and in which order they are played.
  355.   To achieve this the function 'LevelSelectSelectLevel' in the file
  356.   _LEVSEL.QC is used. The file also contains a commented example
  357.   which tells you how to set up you own conditions (for instance how
  358.   to exclude certain not-so-good maps).
  359.   By default this module is set up so that everything works like in
  360.   the original version of Quake, except that when a player selects
  361.   the 'end' level the map sequence 'dm1'-...-'dm6'-'end' is played
  362.   instead.
  363.  
  364. # Updating the module 'Skin' may become desirable if new skins become
  365.   available in the file PLAYER.MDL which is distributed as part of the
  366.   MultiSkin package. The changes you will have to make are trivial,
  367.   just consult the file _SKIN.QC.
  368.  
  369. # Finally compile the sources by typing the command QCCDOS.
  370.   Assuming that compilation succeeded without errors you should now
  371.   copy ..\PROGS.DAT into the directory C:\GAMES\QUAKE\SERVMODS.
  372.   Change directory to C:\GAMES\QUAKE\ and check your changes by typing
  373.      QUAKE -GAME SERVMODS -LISTEN 2
  374.   If you're sure that everything works as expected start your
  375.   dedicated server as usual for instance by
  376.      QUAKE -NOSOUND -NOIPX -NOJOY -DEDICATED 8 +MAP E1M2
  377.   or according to your wishes.
  378.  
  379. -------------------------------------------------------------------------
  380.       
  381. ###### Resources Used:
  382. ----------------------
  383.  
  384. The following impulses are used:
  385.  
  386.     impulse 200    for command 'skin-next'
  387.     impulse 201    for command 'skin-prev'
  388.     impulse 202    for command 'help-skin'
  389.     impulse 203    for command 'rank'
  390.     impulse 204    for command 'help-rank'
  391.     impulse 205    for command 'help-observer'
  392.     impulse 206    for command 'observer-noclip'
  393.     impulse 207    for command 'help-server'
  394.     impulse 208    for command 'init-nextcall'
  395.     impulse 209    for command 'init-nextskin'
  396.     impulse 210    for command 'help-exitrules'
  397.     impulse 211    for command 'help-vote'
  398.     impulse 212    for command 'votes'
  399.     impulse 213    for command 'vote-exit'
  400.     impulse 214    for command 'vote-exitrules'
  401.     impulse 215    for command 'help-drone'
  402.     impulse 216    for command 'help-shrapnel'
  403.     impulse 217    for command 'help-weld'
  404.     impulse 218    for command 'help-modules'
  405.  
  406. -------------------------------------------------------------------------
  407.  
  408. ###### Files:
  409. -------------
  410.  
  411. _modules.qh
  412. _modules.qc       Deals with internal structure of ServerModules.
  413. _omit.qc          Contains dummy spawn functions for excluded monsters.
  414. _plystat.qh
  415. _plystat.qc       Deals with internal structure of ServerModules.
  416. _burn.qh          Module Burn (Header)
  417. _burn.qc          Module Burn (Code)
  418. _drone.qh         Module Drone (Header)
  419. _drone.qc         Module Drone (Code)
  420. _exitrls.qh       Module ExitRules (Header)
  421. _exitrls.qc       Module ExitRules (Code)
  422. _init.qh          Module Init (Header)
  423. _init.qc          Module Init (Code)
  424. _kckscdr.qh       Module KickSuicider (Header)
  425. _kckscdr.qc       Module KickSuicider (Code)
  426. _levsel.qh        Module LevelSelect (Header)
  427. _levsel.qc        Module LevelSelect (Code)
  428. _lightng.qh       Module Lightning (Header)
  429. _lightng.qc       Module Lightning (Code)
  430. _message.qh       Module Messages (Header)
  431. _message.qc       Module Messages (Code)
  432. _motd.qh          Module Motd (Header)
  433. _motd.qc          Module Motd (Code)
  434. _protect.qh       Module Protect (Header)
  435. _protect.qc       Module Protect (Code)
  436. _observe.qc       Module Observer (Header)
  437. _observe.qh       Module Observer (Code)
  438. _random.qh        Module Random (Header)
  439. _random.qc        Module Random (Code)
  440. _rank.qh          Module Rank (Header)
  441. _rank.qc          Module Rank (Code)
  442. _servhlp.qh       Module ServerHelp (Header)
  443. _servhlp.qc       Module ServerHelp (Code)
  444. _servcon.qh       Module ServerConsole (Header)
  445. _servcon.qc       Module ServerConsole (Code)
  446. _shrap.qh         Module Shrapnel (Header)
  447. _shrap.qc         Module Shrapnel (Code)
  448. _skin.qh          Module Skin (Header)
  449. _skin.qc          Module Skin (Code)
  450. _vote.qh          Module Vote (Header)
  451. _vote.qc          Module Vote (Code)
  452. _weld.qh          Module WeldGun (Header)
  453. _weld.qc          Module WeldGun (Code)
  454. _srvmods.pat      Patch file containing all changes to be made
  455.                   to the original QuakeC sources.
  456. _COPYING          GNU General Public License
  457. _MANUAL           Documentation of ServerModules patches.
  458. _CHANGES          History of changes.
  459. _patch.txt        Provides information how to patch and where
  460.                   to get a free copy of the program PATCH.
  461. progs.dat         A precompiled version of the modifications
  462.                   described here.
  463.  
  464. -------------------------------------------------------------------------
  465.       
  466. ###### Copyright:
  467. -----------------
  468.  
  469. /*
  470. **
  471. ** Copyright (C) 1996 Johannes Plass
  472. ** 
  473. ** This program is free software; you can redistribute it and/or modify
  474. ** it under the terms of the GNU General Public License as published by
  475. ** the Free Software Foundation; either version 2 of the License, or
  476. ** (at your option) any later version.
  477. ** 
  478. ** This program is distributed in the hope that it will be useful,
  479. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  480. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  481. ** GNU General Public License for more details.
  482. **
  483. ** You should have received a copy of the GNU General Public License
  484. ** along with this program; if not, write to the Free Software
  485. ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  486. ** 
  487. ** Author:   Johannes Plass (plass@dipmza.physik.uni-mainz.de)
  488. **
  489. */
  490.  
  491. -------------------------------------------------------------------------
  492.       
  493. ###### Acknowledgements:
  494. ------------------------
  495.  
  496. The module 'Skin' is based on Dennis Noordsij's (lnoordsi@inter.NL.net)
  497. Multiskin QuakeC patch.
  498. Please see Dennis Noordsij's QuakeC page
  499.        http://web.inter.NL.net/users/L.J.Noordsij/qc.htm
  500. for further details about MultiSkin.
  501.  
  502.